/** * Licensed to Neo Technology under one or more contributor * license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright * ownership. Neo Technology licenses this file to you under * the Apache License, Version 2.0 (the "License"); you may * not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ package org.neo4j.neoclipse; import org.eclipse.jface.action.IStatusLineManager; import org.eclipse.jface.preference.PreferenceDialog; import org.eclipse.ui.IActionBars; import org.eclipse.ui.IViewSite; import org.eclipse.ui.IWorkbench; import org.eclipse.ui.IWorkbenchPage; import org.eclipse.ui.IWorkbenchPart; import org.eclipse.ui.IWorkbenchPartSite; import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.PartInitException; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.dialogs.PreferencesUtil; import org.eclipse.ui.plugin.AbstractUIPlugin; import org.neo4j.neoclipse.connection.Alias; import org.neo4j.neoclipse.connection.AliasManager; import org.neo4j.neoclipse.connection.ConnectionsView; import org.neo4j.neoclipse.graphdb.GraphDbServiceManager; import org.neo4j.neoclipse.graphdb.GraphDbServiceStatus; import org.neo4j.neoclipse.view.NeoGraphViewPart; import org.neo4j.neoclipse.view.UiHelper; import org.osgi.framework.BundleContext; /** * The activator class controls the plug-in life cycle. */ public class Activator extends AbstractUIPlugin { /** * The plug-in ID. */ public static final String PLUGIN_ID = "org.neo4j.neoclipse"; /** * The graphdb manager. */ private GraphDbServiceManager graphDbServiceManager; private AliasManager aliasManager; private ConnectionsView connectionsView; // Self register private NeoGraphViewPart neoGraphViewPart; // Self register /** * The shared instance. */ private static Activator PLUGIN; /** * Starts up the plug-in and initializes the neo service. */ @Override public void start( final BundleContext context ) throws Exception { super.start( context ); PLUGIN = this; graphDbServiceManager = new GraphDbServiceManager(); aliasManager = new AliasManager(); aliasManager.loadAliases(); } /** * Stops the plug-in and shuts down the neo4j service. */ @Override public void stop( final BundleContext context ) throws Exception { graphDbServiceManager.shutdownGraphDbService(); graphDbServiceManager.stopExecutingTasks(); aliasManager.saveAliases(); PLUGIN = null; super.stop( context ); } /** * Returns the shared instance. * * @return the shared instance */ public static Activator getDefault() { return PLUGIN; } /** * Returns the service manager. */ public GraphDbServiceManager getGraphDbServiceManager() { return graphDbServiceManager; } /** * Show the Neo4j preference page. * * @param filtered only show Neo4j properties when true * @return */ public int showPreferenceDialog( final boolean filtered ) { PreferenceDialog pref = PreferencesUtil.createPreferenceDialogOn( null, "org.neo4j.neoclipse.preference.NeoPreferencePage", ( filtered ? new String[] {} : null ), null ); if ( pref != null ) { return pref.open(); } return 1; } /** * Show the Neo4j Decorator preference page. * * @param filtered only show Neo4j properties when true * @return */ public int showDecoratorPreferenceDialog( final boolean filtered ) { PreferenceDialog pref = PreferencesUtil.createPreferenceDialogOn( null, "org.neo4j.neoclipse.preference.NeoDecoratorPreferencePage", ( filtered ? new String[] {} : null ), null ); if ( pref != null ) { return pref.open(); } return 1; } public AliasManager getAliasManager() { return aliasManager; } public ConnectionsView getConnectionsView() { return getConnectionsView( true ); } private IWorkbenchPage getActivePage() { if ( getWorkbench() != null && getWorkbench().getActiveWorkbenchWindow() != null ) { return getWorkbench().getActiveWorkbenchWindow().getActivePage(); } return null; } public ConnectionsView getConnectionsView( boolean create ) { if ( connectionsView == null ) { IWorkbenchPage page = getActivePage(); if ( page != null ) { connectionsView = (ConnectionsView) page.findView( ConnectionsView.class.getName() ); if ( connectionsView == null && create ) { try { connectionsView = (ConnectionsView) page.showView( ConnectionsView.class.getName() ); } catch ( PartInitException e ) { throw new RuntimeException( e ); } } } } return connectionsView; } public void setConnectionsView( ConnectionsView connectionsView ) { this.connectionsView = connectionsView; } public NeoGraphViewPart getNeoGraphViewPart() { if ( neoGraphViewPart == null ) { IWorkbenchPage page = getActivePage(); if ( page != null ) { neoGraphViewPart = (NeoGraphViewPart) page.findView( NeoGraphViewPart.class.getName() ); if ( neoGraphViewPart == null ) { try { neoGraphViewPart = (NeoGraphViewPart) page.showView( NeoGraphViewPart.class.getName() ); } catch ( PartInitException e ) { throw new RuntimeException( e ); } } } } return neoGraphViewPart; } public void setNeoGraphViewPart( NeoGraphViewPart neoGraphViewPart ) { this.neoGraphViewPart = neoGraphViewPart; } public void setStatusLineMessage( final String message ) { UiHelper.asyncExec( new Runnable() { @Override public void run() { IWorkbench wb = PlatformUI.getWorkbench(); IWorkbenchWindow win = wb.getActiveWorkbenchWindow(); IWorkbenchPage page = win.getActivePage(); IWorkbenchPart part = page.getActivePart(); IWorkbenchPartSite site = part.getSite(); IViewSite vSite = (IViewSite) site; IActionBars actionBars = vSite.getActionBars(); if ( actionBars == null ) { return; } IStatusLineManager statusLineManager = actionBars.getStatusLineManager(); if ( statusLineManager == null ) { return; } statusLineManager.setMessage( message ); } } ); } public Alias getSelectedAlias() { return getConnectionsView().getSelectedAlias(); } public void fireServiceChangedEvent( GraphDbServiceStatus status ) { getGraphDbServiceManager().fireServiceChangedEvent( status ); } }